iT邦幫忙

DAY 5
2

今天要來介紹模式比對.erlang承繼了Prolog的模式比對能力,
但在實做上略有差異;Prolog是人工智慧導向,所以會設法比對
所有符合的模式,而erlang找到第一個符合就返回.

我們來看看一個簡單的程式,面積計算功能.

-module(geometry).
-export([area/1]).

area({rectangle, Width, Hight}) ->
  Width * Hight;
area({circle, R}) ->
  3.14159 * R * R.

編譯及執行過程:
1> c(geometry).
{ok,geometry}
2> geometry:area({rectangle, 3, 4}).
12
4> geometry:area({circle, 3}).
28.274309999999996

--- 分隔線 ---
可以看到,命名為area/1的函式,有兩個,雖然都是傳入一個參數,
但是使用tuple來當參數,而依據tuple裡的第一個原子,分別寫
了兩個對應的計算方式.
有點同名異式的味道.
現在能夠體會出原子與Tuple在erlang的作用了吧.
另外注意一下,在erlang中,雖然寫了兩個 area開頭的,
實際上就是一個函式,只是有兩個條款,中間用 ; 隔開.
最後一個用 . 結束,代表整個函式定義完成.

erlang是函數式程式語言,或者叫函式式.
變數不能變,函數定義可以寫數個.
比較回歸到數學的方式,跟一般程式語言的作法不同.


上一篇
List與String介紹
下一篇
再探模式比對以及用函數當函數參數
系列文
蠻可愛的 Erlang 與 Elixir30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言